package com.bird.设计模式.创建型.单例模式.枚举类型单例;

/**
 * @data 2022/2/28 11:18
 * @author: bird
 * @description: 枚举类型的单例
 * <p>
 * //关注点：枚举类的单例：序列化问题和反射攻击
 * 关于序列化的问题：因为枚举类是天然的序列化机制 可以保证序列化的时候不会创建出多个实例。
 * 关于反射攻击的问题：
 */
public enum EnumInstance {

    INSTANCE {
        // 初始化的方法
        protected void printTest() {
            System.out.println("Geely Print Test!!");
        }
    };

    //枚举类型的方法 这个是可以调用printTest方法。
    protected abstract void printTest();

    private Object data;

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }


    // 获取类的实例
    public static EnumInstance getInstance() {
        return INSTANCE;
    }
}


